package com.shujia.wyh.day03;

/*
        位运算符：
            >>,>>>,<<,&,|,^,~

        要想进行位运算，就必须知道二进制
 */
public class OptWeiDemo1 {
    public static void main(String[] args) {
        int x = 3;
        int y = 4;
        System.out.println(x & y);
        System.out.println(x | y);
        System.out.println(x ^ y);
        System.out.println(~y);
    }
}

/*
    分析：
        需要求出3和4的二进制
        3的二进制：11
        4的二进制：100
        因为x和y都是int类型，所以占4个字节，又因为3和4都是正数所以，他们的原码，反码，补码都一样
        3的原码，反码和补码：00000000 00000000 00000000 00000011
        4的原码，反码和补码：00000000 00000000 00000000 00000100

        &位与运算：有0则0
            00000000 00000000 00000000 00000011
          &
            00000000 00000000 00000000 00000100
            -------------------------------------
            00000000 00000000 00000000 00000000

            结果是：0

         |位或运算：有1则1
            00000000 00000000 00000000 00000011
          |
            00000000 00000000 00000000 00000100
            -----------------------------------
            00000000 00000000 00000000 00000111

            结果是：7

         ^位异或运算：相同则0，不同则1
            00000000 00000000 00000000 00000011
          ^
            00000000 00000000 00000000 00000100
            -----------------------------------
            00000000 00000000 00000000 00000111

            结果是7

         ~位取反运算
            00000000 00000000 00000000 00000100
          ~
           ------------------------------------
   补码：    1 1111111 11111111 11111111 11111011
   反码：    1 1111111 11111111 11111111 11111010
   原码：    1 0000000 00000000 00000000 00000101

            结果是：-5



 */
